package com.chen.controller;

import com.chen.pojo.common.PageResult;
import com.chen.pojo.dto.SkuClassDto;
import com.chen.pojo.entry.SkuClass;
import com.chen.service.SkuClassService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author chen
 * @version 1.0
 * @create_date 2025/8/16
 * 分类管理
 */
@Slf4j
@RestController
@RequestMapping("/api/vm-service/skuClass")
@Tag(name = "商品分类管理接口", description = "商品分类相关操作接口")
public class SkuClassController {
    @Autowired
    SkuClassService skuClassService;

    /**
     * 增加商品分类
     *
     * @param skuClassDto 分类信息
     * @return 增加结果
     */
    @PostMapping
    @Operation(summary = "增加商品分类", description = "添加新的商品分类信息")
    public Boolean addSukClass(@Parameter(description = "分类信息") @RequestBody SkuClassDto skuClassDto) {
        log.info("增加商品分类：{}", skuClassDto.getClassName());
        Boolean result = skuClassService.addSukClass(skuClassDto.getClassName());
        log.info("商品分类增加成功");
        return result;
    }

    /**
     * 分页查找
     *
     * @param pageIndex 页码
     * @param pageSize  页大小
     * @param className 商品类别
     * @return
     */
    @GetMapping("/search")
    @Operation(summary = "分页查询商品分类", description = "根据条件分页查询商品分类信息")
    public PageResult<SkuClass> searchList(
            @Parameter(description = "页码") Integer pageIndex,
            @Parameter(description = "页大小") Integer pageSize,
            @Parameter(description = "商品类别名称") String className) {
        log.info("开始分页查询，当前页：{}，页面显示条数：{}，查询条件：商品类别-{}", pageIndex, pageSize, className);
        return skuClassService.searchList(pageIndex, pageSize, className);
    }

    /**
     * 根据id查询数据
     *
     * @param classId
     * @return
     */
    @GetMapping("/{classId}")
    @Operation(summary = "根据ID查询商品分类", description = "根据商品分类ID获取商品分类详细信息")
    public SkuClass getByClassId(@Parameter(description = "商品分类ID") @PathVariable String classId) {
        log.info("根据商品分类id：{}查询数据", classId);
        return skuClassService.getByClassId(classId);
    }

    /**
     * 分类更新
     *
     * @param classId     分类id
     * @param skuClassDto 分类信息
     * @return 更新结果
     */
    @PutMapping("/{classId}")
    @Operation(summary = "更新商品分类", description = "根据商品分类ID更新商品分类信息")
    public Boolean updateSkuClass(@Parameter(description = "商品分类ID") @PathVariable String classId,
                                  @Parameter(description = "分类信息") @RequestBody SkuClassDto skuClassDto) {
        log.info("根据商品分类id：{} 更新数据", classId);
        return skuClassService.updateSkuClass(classId, skuClassDto);
    }

    /**
     * 根据商品分类ID删除商品分类信息
     *
     * @param classId 商品分类ID
     */
    @DeleteMapping("/{classId}")
    @Operation(summary = "删除商品分类", description = "根据商品分类ID删除商品分类信息")
    public void deleteSkuClass(@Parameter(description = "商品分类ID") @PathVariable String classId) {
        log.info("删除分类id：{}的商品分类", classId);
        skuClassService.deleteSkuClass(classId);
    }

}